package com.example.user.service;

import com.example.model.domain.entity.user.UserInfo;
import com.example.model.vo.user.LoginVo;
import com.example.model.vo.user.UserAuthVo;
import com.example.model.vo.user.UserInfoQueryVo;
import com.github.pagehelper.PageInfo;

import java.util.Map;

/**
 * 用户Service接口
 *
 * @author ruoyi
 * @date 2021-07-15
 */
public interface UserInfoService
{

    /**
     * 获取用户分页
     * @param pageNum
     * @param pageSize
     * @param userInfoQueryVo
     */
    PageInfo<UserInfo> getUserInfoPage(Integer pageNum, Integer pageSize, UserInfoQueryVo userInfoQueryVo);

    /**
     * 锁定用户
     * @param userId
     * @param status
     */
    Integer lockedUserById(Long userId, Integer status);

    /**
     * 用户详情
     * @param userId
     * @return
     */
    Map<String, Object> getUserInfoDetailsById(Long userId);

    /**
     * 认证用户
     * @param userId
     * @param authStatus
     * @return
     */
    Integer approveUserInfoById(Long userId, Integer authStatus);

    /**
     * 登录
     * @param loginVo
     * @return
     */
    Map<String, Object> login(LoginVo loginVo);

    /**
     * 用户认证
     * @param userId
     * @param userAuthVo
     * @return
     */
    Integer userAuth(Long userId, UserAuthVo userAuthVo);

    /**
     * 获取用户信息
     * @param userId
     * @return
     */
    UserInfo getUserInfoById(Long userId);


    /**
     * 获取用户信息
     * @param openid
     * @return
     */
    UserInfo getUserInfoByOpenId(String openid);

    /**
     * 保存用户
     * @param userInfo
     * @return
     */
    Integer insertUserInfo(UserInfo userInfo);
}
